package sv.com.seguros.dto.asg;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.apache.commons.lang.StringUtils;

import sv.com.seguros.dto.ctg.CtgCatalogo;
import sv.com.seguros.dto.ctg.CtgColonia;
import sv.com.seguros.dto.sgd.SgdUsuario;
import sv.com.seguros.web.util.WebUtilidades;

@Entity
@Table(name = "asg_cliente")
public class AsgCliente implements Serializable{

	private static final long serialVersionUID = -5532863553030823133L;
	
	@Id
	@Column(name = "asg_cli_id")
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long asgClienteId;
	@Column(name = "asg_cli_fecha_creacion", nullable = false, length = 14, updatable = false)
	private String asgClienteFechaCreacion;
	@Column(name = "asg_cli_primer_nombre", nullable = false, length = 200)
	private String asgClientePrimerNombre;
	@Column(name = "asg_cli_segundo_nombre", length = 50)
	private String asgClienteSegundoNombre;
	@Column(name = "asg_cli_tercer_nombre", length = 50)
	private String asgClienteTercerNombre;
	@Column(name = "asg_cli_primer_apellido", length = 50)
	private String asgClientePrimerApellido;
	@Column(name = "asg_cli_segundo_apellido", length = 50)
	private String asgClienteSegundoApellido;
	@Column(name = "asg_cli_apellido_casada", length = 50)
	private String asgClienteApellidoCasada;
	@Column(name = "asg_cli_nombre_comercial", length = 200)
	private String asgClienteNombreComercial;
	@Column(name = "asg_cli_documento1", length = 10)
	private String asgClienteDocumento1;
	@Column(name = "asg_cli_documento2", length = 17)
	private String asgClienteDocumento2;
	@Column(name = "asg_cli_fecha_nacimiento", length = 8)
	private String asgClienteFechaNacimiento;
	@Column(name = "asg_cli_telefono1", length = 9)
	private String asgClienteTelefono1;
	@Column(name = "asg_cli_telefono2", length = 9)
	private String asgClienteTelefono2;
	@Column(name = "asg_cli_telefono3", length = 9)
	private String asgClienteTelefono3;
	@Column(name = "asg_cli_correo", length = 250)
	private String asgClienteCorreo;
	@Column(name = "asg_cli_sitio_web", length = 250)
	private String asgClienteSitioWeb;
	@Column(name = "asg_cli_direccion", length = 300)
	private String asgClienteDireccion;
	@Column(name = "asg_cli_registro", length = 10)
	private String asgClienteRegistro;
	@Column(name = "asg_cli_giro", length = 100)
	private String asgClienteGiro;
	@Column(name = "asg_cli_lugar_trabajo", length = 200)
	private String asgClienteLugarTrabajo;
	@Column(name = "asg_cli_cargo", length = 100)
	private String asgClienteCargo;
	@Column(name = "asg_cli_salario", length = 10)
	private String asgClienteSalario;
	@Column(name = "asg_cli_fecha_contratacion", length = 8)
	private String asgClienteFechaContratacion;
	@Column(name = "asg_cli_direccion_trabajo", length = 300)
	private String asgClienteDireccionTrabajo;
	@Column(name = "asg_cli_telefono4", length = 8)
	private String asgClienteTelefono4;
	@Column(name = "asg_cli_telefono5", length = 8)
	private String asgClienteTelefono5;
	@Column(name = "asg_cli_telefono6", length = 8)
	private String asgClienteTelefono6;
	@Column(name = "asg_cli_telefono7", length = 8)
	private String asgClienteTelefono7;
	@Column(name = "asg_cli_nombre_secretaria", length = 200)
	private String asgClienteNombreSecreteria;
	@Column(name = "asg_cli_correo_trabajo", length = 250)
	private String asgClienteCorreoTrabajo;
	@Column(name = "asg_cli_correo_secretaria", length = 250)
	private String asgClienteCorreoSecretaria;
	@Column(name = "asg_cli_observaciones", length = 500)
	private String asgClienteObservaciones;
	@Column(name = "asg_cli_seguimiento", length = 500)
	private String asgClienteSeguimiento;
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "sgd_usu_id", nullable = false)
	private SgdUsuario sgdUsuario;
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ctg_tper_id", nullable = false, updatable = false)
	private CtgCatalogo ctgTipoPersona;
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ctg_tcli_id")
	private CtgCatalogo ctgTipoCliente;
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ctg_col_id")
	private CtgColonia ctgColonia;
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ctg_clap_id")
	private CtgColonia ctgColoniaLaboral;
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ctg_cla_id")
	private CtgCatalogo ctgClasificacion;
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ctg_eciv_id")
	private CtgCatalogo ctgEstadoCivil;
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ctg_prof_id")
	private CtgCatalogo ctgProfesion;
	
	public Long getAsgClienteId() {
		return asgClienteId;
	}

	public void setAsgClienteId(Long asgClienteId) {
		this.asgClienteId = asgClienteId;
	}

	public String getAsgClienteFechaCreacion() {
		return asgClienteFechaCreacion;
	}

	public void setAsgClienteFechaCreacion(String asgClienteFechaCreacion) {
		this.asgClienteFechaCreacion = asgClienteFechaCreacion;
	}

	@Transient
	public String getAsgClienteNombreCompleto() {
		String stringToReturn = asgClientePrimerNombre;
		if(StringUtils.isNotBlank(asgClienteSegundoNombre)) stringToReturn += " " + asgClienteSegundoNombre;
		if(StringUtils.isNotBlank(asgClienteTercerNombre)) stringToReturn += " " + asgClienteTercerNombre;
		if(StringUtils.isNotBlank(asgClientePrimerApellido)) stringToReturn += " " + asgClientePrimerApellido;
		if(StringUtils.isNotBlank(asgClienteSegundoApellido)) stringToReturn += " " + asgClienteSegundoApellido;
		if(StringUtils.isNotBlank(asgClienteApellidoCasada)) stringToReturn += " " + asgClienteApellidoCasada;
		return stringToReturn;
	}

	public String getAsgClientePrimerNombre() {
		return asgClientePrimerNombre;
	}

	public void setAsgClientePrimerNombre(String asgClientePrimerNombre) {
		this.asgClientePrimerNombre = asgClientePrimerNombre;
	}

	public String getAsgClienteSegundoNombre() {
		return asgClienteSegundoNombre;
	}

	public void setAsgClienteSegundoNombre(String asgClienteSegundoNombre) {
		this.asgClienteSegundoNombre = asgClienteSegundoNombre;
	}

	public String getAsgClienteTercerNombre() {
		return asgClienteTercerNombre;
	}

	public void setAsgClienteTercerNombre(String asgClienteTercerNombre) {
		this.asgClienteTercerNombre = asgClienteTercerNombre;
	}

	public String getAsgClientePrimerApellido() {
		return asgClientePrimerApellido;
	}

	public void setAsgClientePrimerApellido(String asgClientePrimerApellido) {
		this.asgClientePrimerApellido = asgClientePrimerApellido;
	}

	public String getAsgClienteSegundoApellido() {
		return asgClienteSegundoApellido;
	}

	public void setAsgClienteSegundoApellido(String asgClienteSegundoApellido) {
		this.asgClienteSegundoApellido = asgClienteSegundoApellido;
	}

	public String getAsgClienteApellidoCasada() {
		return asgClienteApellidoCasada;
	}

	public void setAsgClienteApellidoCasada(String asgClienteApellidoCasada) {
		this.asgClienteApellidoCasada = asgClienteApellidoCasada;
	}

	public String getAsgClienteNombreComercial() {
		return asgClienteNombreComercial;
	}

	public void setAsgClienteNombreComercial(String asgClienteNombreComercial) {
		this.asgClienteNombreComercial = asgClienteNombreComercial;
	}

	public String getAsgClienteDocumento1() {
		return asgClienteDocumento1;
	}

	public void setAsgClienteDocumento1(String asgClienteDocumento1) {
		this.asgClienteDocumento1 = asgClienteDocumento1;
	}

	public String getAsgClienteDocumento2() {
		return asgClienteDocumento2;
	}

	public void setAsgClienteDocumento2(String asgClienteDocumento2) {
		this.asgClienteDocumento2 = asgClienteDocumento2;
	}

	public String getAsgClienteFechaNacimiento() {
		return asgClienteFechaNacimiento;
	}

	public void setAsgClienteFechaNacimiento(String asgClienteFechaNacimiento) {
		this.asgClienteFechaNacimiento = asgClienteFechaNacimiento;
	}

	public String getAsgClienteTelefono1() {
		return asgClienteTelefono1;
	}

	public void setAsgClienteTelefono1(String asgClienteTelefono1) {
		this.asgClienteTelefono1 = asgClienteTelefono1;
	}

	public String getAsgClienteTelefono2() {
		return asgClienteTelefono2;
	}

	public void setAsgClienteTelefono2(String asgClienteTelefono2) {
		this.asgClienteTelefono2 = asgClienteTelefono2;
	}

	public String getAsgClienteTelefono3() {
		return asgClienteTelefono3;
	}

	public void setAsgClienteTelefono3(String asgClienteTelefono3) {
		this.asgClienteTelefono3 = asgClienteTelefono3;
	}

	public String getAsgClienteCorreo() {
		return asgClienteCorreo;
	}

	public void setAsgClienteCorreo(String asgClienteCorreo) {
		this.asgClienteCorreo = asgClienteCorreo;
	}

	public String getAsgClienteSitioWeb() {
		return asgClienteSitioWeb;
	}

	public void setAsgClienteSitioWeb(String asgClienteSitioWeb) {
		this.asgClienteSitioWeb = asgClienteSitioWeb;
	}

	public String getAsgClienteDireccion() {
		return asgClienteDireccion;
	}

	public void setAsgClienteDireccion(String asgClienteDireccion) {
		this.asgClienteDireccion = asgClienteDireccion;
	}

	public String getAsgClienteRegistro() {
		return asgClienteRegistro;
	}

	public void setAsgClienteRegistro(String asgClienteRegistro) {
		this.asgClienteRegistro = asgClienteRegistro;
	}

	public String getAsgClienteGiro() {
		return asgClienteGiro;
	}

	public void setAsgClienteGiro(String asgClienteGiro) {
		this.asgClienteGiro = asgClienteGiro;
	}

	public String getAsgClienteLugarTrabajo() {
		return asgClienteLugarTrabajo;
	}

	public void setAsgClienteLugarTrabajo(String asgClienteLugarTrabajo) {
		this.asgClienteLugarTrabajo = asgClienteLugarTrabajo;
	}

	public String getAsgClienteCargo() {
		return asgClienteCargo;
	}

	public void setAsgClienteCargo(String asgClienteCargo) {
		this.asgClienteCargo = asgClienteCargo;
	}

	public String getAsgClienteSalario() {
		return asgClienteSalario;
	}

	public void setAsgClienteSalario(String asgClienteSalario) {
		this.asgClienteSalario = asgClienteSalario;
	}

	public String getAsgClienteFechaContratacion() {
		return asgClienteFechaContratacion;
	}

	public void setAsgClienteFechaContratacion(String asgClienteFechaContratacion) {
		this.asgClienteFechaContratacion = asgClienteFechaContratacion;
	}

	public String getAsgClienteDireccionTrabajo() {
		return asgClienteDireccionTrabajo;
	}

	public void setAsgClienteDireccionTrabajo(String asgClienteDireccionTrabajo) {
		this.asgClienteDireccionTrabajo = asgClienteDireccionTrabajo;
	}

	public String getAsgClienteTelefono4() {
		return asgClienteTelefono4;
	}

	public void setAsgClienteTelefono4(String asgClienteTelefono4) {
		this.asgClienteTelefono4 = asgClienteTelefono4;
	}

	public String getAsgClienteTelefono5() {
		return asgClienteTelefono5;
	}

	public void setAsgClienteTelefono5(String asgClienteTelefono5) {
		this.asgClienteTelefono5 = asgClienteTelefono5;
	}

	public String getAsgClienteTelefono6() {
		return asgClienteTelefono6;
	}

	public void setAsgClienteTelefono6(String asgClienteTelefono6) {
		this.asgClienteTelefono6 = asgClienteTelefono6;
	}

	public String getAsgClienteTelefono7() {
		return asgClienteTelefono7;
	}

	public void setAsgClienteTelefono7(String asgClienteTelefono7) {
		this.asgClienteTelefono7 = asgClienteTelefono7;
	}

	public String getAsgClienteNombreSecreteria() {
		return asgClienteNombreSecreteria;
	}

	public void setAsgClienteNombreSecreteria(String asgClienteNombreSecreteria) {
		this.asgClienteNombreSecreteria = asgClienteNombreSecreteria;
	}

	public String getAsgClienteCorreoTrabajo() {
		return asgClienteCorreoTrabajo;
	}

	public void setAsgClienteCorreoTrabajo(String asgClienteCorreoTrabajo) {
		this.asgClienteCorreoTrabajo = asgClienteCorreoTrabajo;
	}

	public String getAsgClienteCorreoSecretaria() {
		return asgClienteCorreoSecretaria;
	}

	public void setAsgClienteCorreoSecretaria(String asgClienteCorreoSecretaria) {
		this.asgClienteCorreoSecretaria = asgClienteCorreoSecretaria;
	}

	public String getAsgClienteObservaciones() {
		return asgClienteObservaciones;
	}

	public void setAsgClienteObservaciones(String asgClienteObservaciones) {
		this.asgClienteObservaciones = asgClienteObservaciones;
	}

	public String getAsgClienteSeguimiento() {
		return asgClienteSeguimiento;
	}

	public void setAsgClienteSeguimiento(String asgClienteSeguimiento) {
		this.asgClienteSeguimiento = asgClienteSeguimiento;
	}

	public SgdUsuario getSgdUsuario() {
		return sgdUsuario;
	}

	public void setSgdUsuario(SgdUsuario sgdUsuario) {
		this.sgdUsuario = sgdUsuario;
	}

	public CtgCatalogo getCtgTipoPersona() {
		return ctgTipoPersona;
	}

	public void setCtgTipoPersona(CtgCatalogo ctgTipoPersona) {
		this.ctgTipoPersona = ctgTipoPersona;
	}

	public CtgCatalogo getCtgTipoCliente() {
		return ctgTipoCliente;
	}

	public void setCtgTipoCliente(CtgCatalogo ctgTipoCliente) {
		this.ctgTipoCliente = ctgTipoCliente;
	}

	public CtgCatalogo getCtgClasificacion() {
		return ctgClasificacion;
	}

	public void setCtgClasificacion(CtgCatalogo ctgClasificacion) {
		this.ctgClasificacion = ctgClasificacion;
	}

	public CtgColonia getCtgColonia() {
		return ctgColonia;
	}

	public void setCtgColonia(CtgColonia ctgColonia) {
		this.ctgColonia = ctgColonia;
	}

	public CtgColonia getCtgColoniaLaboral() {
		return ctgColoniaLaboral;
	}

	public void setCtgColoniaLaboral(CtgColonia ctgColoniaLaboral) {
		this.ctgColoniaLaboral = ctgColoniaLaboral;
	}

	public CtgCatalogo getCtgEstadoCivil() {
		return ctgEstadoCivil;
	}

	public void setCtgEstadoCivil(CtgCatalogo ctgEstadoCivil) {
		this.ctgEstadoCivil = ctgEstadoCivil;
	}

	public CtgCatalogo getCtgProfesion() {
		return ctgProfesion;
	}

	public void setCtgProfesion(CtgCatalogo ctgProfesion) {
		this.ctgProfesion = ctgProfesion;
	}

	@Transient
	public String getAsgClienteFechaNacimientoAsDD_MM_YYYY(){
		if(StringUtils.isNotBlank(this.asgClienteFechaNacimiento))
			return WebUtilidades.getDateDD_MM_YYYY_From_YYYYMMDD(this.asgClienteFechaNacimiento);
		return "";
	}

}
